查看原文
其他

Java 2019 年生态圈报告

SnailClimb JavaGuide 2020-08-20

数据来源自国外的一个调查,在过去的几周,这份调查一共采访了6707 名开发人员。数据来源:https://www.baeldung.com/java-in-2019

1.JDK 版本使用情况

JDK 版本使用情况

即使在今天 Java 13 都已经发布了,Java 8 仍然是使用最广泛的 JDK 版本。不过, Java 8 仍然从去年的 84.7%下降到今年的 79.8%。我觉得这很大程度上因为 JDK 8 是一个较为里程碑的版本,JDK 8 提供了 Lambda 表达式、函数式接口、Stream 流等等非常方便开发的新特性。为什么 Java 8 还是采用最多的 JDK 版本呢?我觉得还有一点非常重要的原因是:很多人连 Java 8 的新特性都没玩熟,连最基本的 Lambda 表达式和 Stream 流都玩不转,显然你引入更高版本的 JDK ,里面很多新特性大部分也不一定会用,而且不一定能用到。关于 Java 8 新特性,可以查阅这篇文章:Java 8 新特性最佳指南

2.Spring Framework 的使用

Spring Framework 的使用

与 Java 相对,这是一个完全不同的故事。去年 Spring4 超过 50%,现在已经达到 30%,而 Spring5 从今天的 24%上升到今天的 58.4%。我觉得这大概率是因为 Spring Boot 最新的版本内部就是集成的 Spring 5,并且 Spring 5 更有利于开发者进行开发。

Java EE 的使用占比也很有趣,从去年的 9.5%上升到现在的 14%。

3.Spring Boot 的使用

Spring Boot 的使用

对于 Spring Boot,可以看出还有 Spring Boot 已经成为最主流的 Java Web 框架,这点我们在平时工作和学习中也是可以清楚看到的。但是,仍然有接近 25% 的开发者并没有选择使用更优秀的 Spring Boot,难道是为了维护老项目或者是不想拥抱更加优秀的技术?

Spring Boot 2.0+从去年的 30%上升到现在的 60.5%。Spring Boot 在我们平时开发中使用的太广泛了,一般情况下进行新项目的开发都会优先选择 Spring Boot 并且是它的最新版本。为此,我自己也开源了一份 Spring Boot 学习指南:https://github.com/Snailclimb/springboot-guide[1] (目前已经支持在线阅读!)

4.构建工具的使用

构建工具的使用

构建工具的数据貌似很稳定,和去年一样,Maven 还是开发者使用最广泛的构建工具。

这点其实还是令我比较诧异的。虽然,我知道大部分国内用户和公司都是使用 Maven 的,这点你可以通过在 Github 上搜索 Java 项目有比较清楚的认识。但是,我以为国外会优先使用 Gradle ,毕竟 Gradle 相比于 Maven 在很多方面做的还是要好点。而且,我所在的外企公司在前几年就开始大规模采用 Gradle 开发 Java 项目了,不说其他的。我个人觉得 Gradle 用起来更舒服一点,也推荐各位可以尝试一下。

5.IDE 的采用

编辑器的使用

IntelliJ 毋庸置疑是使用最广泛的 IDE。但是, 为啥 Eclipse 今年都还有 32.8% 的占比,虽然,相比于去年的 38%降低了不少。

6.web 服务器的采用

web 服务器的使用

Tomcat 仍然是开发者中使用最广泛的 web  服务器,市场占有率高达 73 %。Spring Boot 默认使用的 web 服务器就是 Tomcat 了,我想这也为它的市场占有率的增加加了把🔥。

Spring Boot 支持以下嵌入式 servlet 容器:

NameServlet Version
Tomcat 9.04.0
Jetty 9.43.1
Undertow 2.04.0

您还可以将 Spring 引导应用程序部署到任何 Servlet 3.1+兼容的 Web 容器中。

7.其他基于 JVM 的语言

虽然 Kotlin 被广泛采用和接受,但是仍然有 62.6% 的开发人员仅使用 Java。Kotlin 13%增长到了今天的 16.5%。

Groovy 从今天的 19.3%下降到了 17.4%,现在大多数注意力都转移到了 Kotlin 身上。Scala 也下跌了约 1.1%,目前跌至 8.6%。

因此,趋势很明显– Kotlin 正在逐渐淘汰其他 JVM 语言

8.数据库的使用

数据库的使用

数据库领域感觉 MySQL 、PostgreSQL、OracleDB 这三者所占的比例还是比较大的,MySQL 依然是开发者中使用最广泛的。但是,PostgreSQL 大有超过之势头,PostgreSQL 自去年以来增长了 5%。非关系数据库使用最广泛的还是 MongoDB 然后是 Redis,平时开发中,但凡并发量会稍大一点,都会优先选择使用 Redis 作为缓存层,避免过多请求直接访问数据库。

9.总结

我个人感觉上面的数据统计情况大部分都是意料之中,让我感到意外的是构建工具的使用以及使用 Kotlin 的开发者的占比。

总而言之,本文对 Java 社区进行了非常酷的介绍。



推荐阅读

新手也能看懂的 SpringBoot 异步编程指南

Github 上热门的 Spring Boot 项目实战推荐

Java 编程技巧之数据结构

JWT 身份认证优缺点分析以及常见问题解决方案

架构设计--互联网架构演化

值得开发者关注的 Java 8 后时代的语言特性

【原创】关于Spring中的参数校验的一点思考

Spring常见问题总结(补充版)

分布式ID生成方案总结

入职一个月的职场小白,谈谈自己这段时间的感受

Code Review最佳实践

后端开发必备的 RestFul API 知识

技术面试复习大纲

如何给老婆解释什么是RPC

干货收藏 | Java程序员必备的一些流程图

十分钟搞懂Java效率工具Lombok使用与原理

看完这篇文章,别说自己不会用Lambda表达式了!

一些有助于你拿Offer的文章

面试官:“谈谈Spring中都用到了哪些设计模式?”。



如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号。


欢迎关注点个再看

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存